/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import Dao.AlunoDao;
import Dao.AlunoDaoImplJPA;
import Dao.AtividadeDao;
import Dao.AtividadeDaoImplJPA;
import Dao.NotaDao;
import Dao.NotaDaoImplJPA;
import Pojo.Aluno;
import Pojo.Atividade;
import Pojo.Nota;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;

/**
 *
 * @author thiago schons
 */
public class NotaDaoImplJPATeste {
    
    public NotaDaoImplJPATeste() {
    }
    
    @BeforeClass
    public static void setUpClass() {
    }
    
    @AfterClass
    public static void tearDownClass() {
    }
    
    @Before
    public void setUp() {
    }
    
    @After
    public void tearDown() {
    }
    // TODO add test methods here.
    // The methods must be annotated with annotation @Test. For example:
    //
    // @Test
    // public void hello() {}
    
    @Test
    public void inserirDaCerto(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(1,20);
        assertTrue(notaDao.inserir(nota));
    }
        
    @Test
    public void alterarDaCerto(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(1,10);
        assertTrue(notaDao.alterar(nota));
    }
    
    @Test
    public void alterarDaErrado(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(5,10);
        assertFalse(notaDao.alterar(nota));
    }
    
    @Test
    public void removerDaCerto(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(1,10);
        assertTrue(notaDao.remover(nota));
    }
    
    @Test
    public void removerDaErrado(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(5,10);
        assertFalse(notaDao.remover(nota));
    }
      
    @Test
    public void pesquisarPorIdDaCerto(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(1,10);
        notaDao.inserir(nota);
        
        assertNotNull(notaDao.pesquisarPorId(1));
    }
    
    @Test
    public void pesquisarPorIdDaErrado(){
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(1,10);
        notaDao.remover(nota);
        
        assertNull(notaDao.pesquisarPorId(1));
    }
    
    @Test
    public void verificarLancamentoDaCerto(){
        AlunoDao alunoDao = new AlunoDaoImplJPA();
        Aluno aluno = new Aluno(1,"Thiago","09989403643");
        alunoDao.inserir(aluno);
        
        AtividadeDao atividadeDao = new AtividadeDaoImplJPA();
        Atividade atividade = new Atividade(1, "Prova1", "Prova", null, 100);
        atividadeDao.inserir(atividade);
        
        NotaDao notaDao = new NotaDaoImplJPA();
        Nota nota = new Nota(10,aluno,atividade);
        notaDao.inserir(nota);
        
        assertSame(1,notaDao.verificarLancamento(aluno, atividade));
    }
    
    @Test
    public void verificarLancamentoDaErrado(){
        Aluno aluno = new Aluno(1235,"Thiago","09989403643");
        Atividade atividade = new Atividade(2912, "Prova1", "Prova", null, 100);
        NotaDao notaDao = new NotaDaoImplJPA();
        
        assertSame(0,notaDao.verificarLancamento(aluno, atividade));
    }
}